package com.lanou.cart.controller;

import com.lanou.cart.service.CartService;
import com.lanou.entity.entity.CartItem;
import com.lanou.entity.entity.ItemEntity;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * 创建人   :卢松
 * 创建时间 :2019-07-11
 **/
@RestController
@RequestMapping("/cart")
public class CartController {

    /*
    * /cart/add
    * 参数 数量  商品Id
    *  根据商品id查找到商品详细信息
    * 添加到购物车
    * */
    @Resource
    private CartService cartService;

    /**
     * add
     * 单个商品加入购物车
     *
     */
    @PostMapping("/add")
    public void add(Integer num,Long itemId){

        ItemEntity entity = this.cartService.findItem(itemId);

        CartItem cart = CartItem.builder().entity(entity).count(num).build();

        String s = (entity.getNum() < num) ? "缺货" : "有货";
        cart.setIsExists(s);
        String userId = "userID2";
        this.cartService.add(cart,userId);
    }

    /**
     * 根据 用户id查找出 redis中存的所有商品
     * list是购物车列表里面存的是 所有商品 以及 购买数量 ，和库存情况
     *
     * @return List<CartItem>
     */
    @PostMapping("/findCartList")
    public List<CartItem> find(String co){
//        System.out.println(co);
//        此处需要用户的ID 先设定假数据ID
        return this.cartService.find(co);
    }

    /**
     * + / — / 直接修改 num
     *
     * 根据商品id 查找商品库存
     * @param id  商品id
     * @param count 购买数量
     * @return
     */
    @RequestMapping(value = "/update",method = RequestMethod.POST)
    public Boolean update(Long id, Long count){
//        先查一遍 前后count是否有变化

        ItemEntity item = this.cartService.findItem(id);

        if (count.equals(item.getNum())){

            return false;
        }else {
            String s = (item.getNum() < count) ? "缺货" : "有货";
            String userId = "userID:7";
            this.cartService.update(userId,id,count,s);
            return true;
        }

    }

    /**
     *
     * 从购物车删除该商品
     *
     * @param id
     */
    @PostMapping("/delete/{itemId}")
    public boolean delete(@PathVariable("itemId") Long id){
//        System.out.println(id);
        String userId = "userID2";
        boolean b = this.cartService.dele(userId, id);
        return b;
    }


}
